
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

bool is_sushu(int n){
    for(int i=2;i*i<=n;i++){
        if(n%i==0){
            return false;
        }
    }
    return true;
}
void calc(int n){
    int cnt=0;
    for(int i=2;i<=n/2;i++){
        if(is_sushu(i)&& is_sushu(n-i)){
            printf("%d %d",i,n-i);
            return;
        }
    }
}
int main() {
    int n;//组数
//    int
//    is_huiwen(1441,10);
    while (std::cin >> n) {
        while(n){
            int in;
            std::cin>>in;

            calc(in);

            n--;
        }
    }
//    while(1){}
    return 0;
}

